package com.xpffly.design.factory.simple.factory;

import com.xpffly.design.factory.base.service.Human;

/**
 * @Author: xpengfei
 * @Date: 2021/3/27 19:09
 * @Description：简单工厂模式中的工厂类 简单工厂模式又称为静态工厂模式，与base包中的工厂区别在于:去掉了AbstractHumanFactory抽象工厂类
 * 同时把createHuman方法设置为静态类型，简化了类的创建过程
 * 缺点：工厂类的扩展比较困难，不符合开闭原则
 */
public class HumanFactory {

    /**
     * 创建对象
     *
     * @param tClass
     * @param <T>
     * @return
     */
    public static <T extends Human> T createHuman(Class<T> tClass) {
        Human human = null;

        try {
            human = (Human) Class.forName(tClass.getName()).newInstance();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return (T) human;
    }
}
